//导入 express
const express = require('express')
//创建web服务器
const app = express();
//启动服务器
app.listen(8080, () => {
    console.log('8080 端口服务器已启动 http://127.0.0.1:8080')
})
//配置解析application/json格式数据的内置中间件
app.use(express.json())
//配置解析application/x-www-form-urlencoded格式数据的内置中间件
app.use(express.urlencoded({ extended: false }))

//导入解析表单数据的中间件body-parser
const parser = require('body-parser')
//使用app. use()注册中间件
app.use(parser.urlencoded({ extended: false }))

//定要在路由之前，配置 cors这个中间件,从而解决接口跨域的问题
const cors = require('cors')
app.use(cors())

//express-session 存储信息
//当前端请求后端接口不存在跨域问题的时候，推荐使用Session身份认证机制。
const session=require('express-session')
app.use(session({
    secret:'zouyangguang',//secret可以是任意字符串
    resave:false, //固定写法
    saveUninitialized:true //固定写法
}))

const router = require('./10.2路由模块')
//注意:app. use()函数的作用，就是来注册全局中间件I
app.use(router)

//JWT认证机制
//总结:用户的信息通过Token字符串的形式，保存在客户端浏览器中。服务器通过还原Token字符串的形式来认证用户的身份。
//JWT通常由三部分组成，分别是 Header(头部)、Payload(有效荷载)、Signature(签名)
//三者之间使用英文的“”分隔，格式如下:
//Header.Payload.Signature

//JWT的使用方式
//此后，客户端每次与服务器通信，都要带上这个JWT的字符串，从而进行身份认证。推荐的做法是把JWT放在HTTP请求头的Authorization字段中，格式如下:
//Authorization: Bearer < token >

//jsonwebtoken用于生成JWT字符串
//express - jwt用于将JWT字符串解析还原成JSON对象